@akashnetwork/chain-sdk 1.0.0-alpha.12 → 1.0.0-alpha.13
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/cjs/sdl/index.cjs +5 -1
- package/dist/cjs/sdl/index.cjs.map +2 -2
- package/dist/cjs/test.cjs +2 -2
- package/dist/cjs/test.cjs.map +2 -2
- package/dist/esm/{chunk-NM5T65S3.js → chunk-LSLZAKUA.js} +26 -25
- package/dist/esm/{chunk-NM5T65S3.js.map → chunk-LSLZAKUA.js.map} +3 -3
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.web.js +3 -1
- package/dist/esm/index.web.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/sdl/index.d.ts +2 -0
- package/package.json +1 -1
package/dist/cjs/sdl/index.cjs
CHANGED
|
@@ -15,11 +15,15 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
15
|
}
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
18
19
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
20
|
var sdl_exports = {};
|
|
20
21
|
__export(sdl_exports, {
|
|
21
|
-
SDL: () => import_SDL.SDL
|
|
22
|
+
SDL: () => import_SDL.SDL,
|
|
23
|
+
SdlValidationError: () => import_SdlValidationError.SdlValidationError
|
|
22
24
|
});
|
|
23
25
|
module.exports = __toCommonJS(sdl_exports);
|
|
24
26
|
var import_SDL = require("./SDL/SDL.cjs");
|
|
27
|
+
__reExport(sdl_exports, require("./types.cjs"), module.exports);
|
|
28
|
+
var import_SdlValidationError = require("./SDL/SdlValidationError.cjs");
|
|
25
29
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/sdl/index.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * SDL (Stack Definition Language) module exports\n * Provides functionality for parsing and validating Akash deployment manifests\n *\n * @example\n * ```ts\n * import { SDL } from './sdl';\n *\n * const yaml = `\n * version: \"2.0\"\n * services:\n * web:\n * image: nginx\n * expose:\n * - port: 80\n * as: 80\n * to:\n * - global: true\n * `;\n *\n * const sdl = SDL.fromString(yaml);\n * const manifest = sdl.manifest();\n * ```\n */\nexport { SDL } from \"./SDL/SDL.ts\";\n"],
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["/**\n * SDL (Stack Definition Language) module exports\n * Provides functionality for parsing and validating Akash deployment manifests\n *\n * @example\n * ```ts\n * import { SDL } from './sdl';\n *\n * const yaml = `\n * version: \"2.0\"\n * services:\n * web:\n * image: nginx\n * expose:\n * - port: 80\n * as: 80\n * to:\n * - global: true\n * `;\n *\n * const sdl = SDL.fromString(yaml);\n * const manifest = sdl.manifest();\n * ```\n */\nexport { SDL } from \"./SDL/SDL.ts\";\n\nexport * from \"./types.ts\";\nexport { SdlValidationError } from \"./SDL/SdlValidationError.ts\";\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBA,iBAAoB;AAEpB,wBAAc,uBA1Bd;AA2BA,gCAAmC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/cjs/test.cjs
CHANGED
|
@@ -34,8 +34,8 @@ async function main() {
|
|
|
34
34
|
const wallet = await import_proto_signing.DirectSecp256k1HdWallet.fromMnemonic(testMnemonic, { prefix: "akash" });
|
|
35
35
|
const [account] = await wallet.getAccounts();
|
|
36
36
|
console.log(`Test Account Address: ${account.address}`);
|
|
37
|
-
const QUERY_RPC_URL = process.env.QUERY_RPC_URL || "http://
|
|
38
|
-
const TX_RPC_URL = process.env.TX_RPC_URL || "https://
|
|
37
|
+
const QUERY_RPC_URL = process.env.QUERY_RPC_URL || "http://grpc.sandbox-2.aksh.pw:9090";
|
|
38
|
+
const TX_RPC_URL = process.env.TX_RPC_URL || "https://rpc.sandbox-2.aksh.pw:443";
|
|
39
39
|
const sdk = (0, import_index.createChainNodeSDK)({
|
|
40
40
|
query: { baseUrl: QUERY_RPC_URL },
|
|
41
41
|
tx: { baseUrl: TX_RPC_URL, signer: wallet }
|
package/dist/cjs/test.cjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/test.ts"],
|
|
4
|
-
"sourcesContent": ["import { DirectSecp256k1HdWallet } from \"@cosmjs/proto-signing\";\nimport Long from \"long\";\nimport { setTimeout as wait } from \"timers/promises\";\n\nimport type { Deposit, MsgAccountDeposit } from \"./generated/protos/index.akash.v1.ts\";\nimport { DeploymentID, Source } from \"./generated/protos/index.akash.v1.ts\";\nimport type { MsgCreateDeployment } from \"./generated/protos/index.akash.v1beta4.ts\";\nimport { GroupSpec } from \"./generated/protos/index.akash.v1beta4.ts\";\nimport type { MsgCreateLease } from \"./generated/protos/index.akash.v1beta5.ts\";\nimport { createChainNodeSDK, SDL } from \"./index.ts\";\n\nasync function main() {\n let mnemonic = process.env.MNEMONIC || \"motion isolate mother convince snack twenty tumble boost elbow bundle modify balcony\";\n mnemonic = \"vacuum wait copper guilt bind return indoor convince effort leader solid tape salon swim better step gossip because satoshi fresh use jungle diagram grape\";\n mnemonic = \"vacuum wait copper guilt bind return indoor convince effort leader solid tape salon swim better step gossip because satoshi fresh use jungle diagram grape\";\n\n const testMnemonic = mnemonic;\n\n const wallet = await DirectSecp256k1HdWallet.fromMnemonic(testMnemonic, { prefix: \"akash\" });\n const [account] = await wallet.getAccounts();\n\n console.log(`Test Account Address: ${account.address}`);\n const QUERY_RPC_URL = process.env.QUERY_RPC_URL || \"http://rpc.dev.akash.pub:30090\";\n const TX_RPC_URL = process.env.TX_RPC_URL || \"https://testnetrpc.akashnet.net:443\";\n\n const sdk = createChainNodeSDK({\n query: { baseUrl: QUERY_RPC_URL },\n tx: { baseUrl: TX_RPC_URL, signer: wallet },\n });\n\n // const deployments = await sdk.akash.deployment.v1beta4.getDeployments({\n // filters: {\n // owner: account.address,\n // state: \"active\",\n // },\n // pagination: {\n // limit: 100,\n // },\n // });\n // const balance = await sdk.cosmos.bank.v1beta1.getBalance({\n // address: account.address,\n // denom: \"uakt\",\n // })\n // console.log(`Balance: ${balance.balance?.amount}${balance.balance?.denom}`);\n\n // console.log(`Found ${deployments.deployments.length} deployments`);\n // for (const deployment of deployments.deployments) {\n // await sdk.akash.deployment.v1beta4.closeDeployment({\n // id: deployment.deployment!.id,\n // });\n // }\n\n // return;\n\n console.log(\"Step 1: Creating deployment...\");\n const sdl = SDL.fromString(`\n# Welcome to the Akash Network! \uD83D\uDE80\u2601\n# This file is called a Stack Definition Laguage (SDL)\n# SDL is a human friendly data standard for declaring deployment attributes.\n# The SDL file is a \"form\" to request resources from the Network.\n# SDL is compatible with the YAML standard and similar to Docker Compose files.\n\n---\n# Indicates version of Akash configuration file. Currently only \"2.0\" is accepted.\nversion: \"2.0\"\n\n# The top-level services entry contains a map of workloads to be ran on the Akash deployment. Each key is a service name; values are a map containing the following keys:\n# https://akash.network/docs/getting-started/stack-definition-language/#services\nservices:\n # The name of the service \"web\"\n web:\n # The docker container image with version. You must specify a version, the \"latest\" tag doesn't work.\n image: baktun/hello-akash-world:1.0.0\n # You can map ports here https://akash.network/docs/getting-started/stack-definition-language/#servicesexpose\n expose:\n - port: 3000\n as: 80\n to:\n - global: true\n\n# The profiles section contains named compute and placement profiles to be used in the deployment.\n# https://akash.network/docs/getting-started/stack-definition-language/#profiles\nprofiles:\n # profiles.compute is map of named compute profiles. Each profile specifies compute resources to be leased for each service instance uses uses the profile.\n # https://akash.network/docs/getting-started/stack-definition-language/#profilescompute\n compute:\n # The name of the service\n web:\n resources:\n cpu:\n units: 0.5\n memory:\n size: 512Mi\n storage:\n size: 512Mi\n\n# profiles.placement is map of named datacenter profiles. Each profile specifies required datacenter attributes and pricing configuration for each compute profile that will be used within the datacenter. It also specifies optional list of signatures of which tenants expects audit of datacenter attributes.\n# https://akash.network/docs/getting-started/stack-definition-language/#profilesplacement\n placement:\n dcloud:\n pricing:\n # The name of the service\n web:\n denom: uakt\n amount: 10000\n\n# The deployment section defines how to deploy the services. It is a mapping of service name to deployment configuration.\n# https://akash.network/docs/getting-started/stack-definition-language/#deployment\ndeployment:\n # The name of the service\n web:\n dcloud:\n profile: web\n count: 1\n `, \"beta3\");\n\n const deploymentMessage: MsgCreateDeployment = {\n id: {\n owner: account.address,\n dseq: Long.fromNumber(Date.now()), // Use timestamp for uniqueness\n },\n groups: sdl.groups(),\n hash: await sdl.manifestVersion(),\n deposit: {\n amount: {\n denom: \"uakt\",\n amount: \"500000\",\n },\n sources: [Source.balance],\n },\n };\n\n // for (let i = 0; i < 1; i++) {\n // deploymentMessage.id!.dseq = deploymentMessage.id!.dseq!.add(Long.fromNumber(1));\n const deploymentResult = await sdk.akash.deployment.v1beta4.createDeployment(deploymentMessage, {\n memo: \"Test deployment for lease creation - Akash Chain SDK\",\n });\n // console.log(`created ${i}/10 deployment`);\n // }\n\n console.log(\"Deployment created successfully!\");\n\n // return;\n const deploymentId = {\n owner: account.address,\n dseq: deploymentMessage.id!.dseq,\n };\n\n console.log(\"Step 2: Waiting for providers to create bids...\");\n console.log(`Deployment ID: ${deploymentId.owner}/${deploymentId.dseq}`);\n let bidsResponse;\n let attempts = 0;\n const maxAttempts = 18;\n\n do {\n await wait(10000);\n attempts++;\n\n console.log(`Checking for bids (attempt ${attempts}/${maxAttempts})...`);\n console.log(\"Make sure your address is whitelisted on this network.\");\n\n bidsResponse = await sdk.akash.market.v1beta5.getBids({\n filters: {\n owner: deploymentId.owner,\n dseq: deploymentId.dseq,\n gseq: 1,\n oseq: 1,\n },\n });\n\n console.log(`Found ${bidsResponse?.bids?.length || 0} bids`);\n } while ((!bidsResponse?.bids || bidsResponse.bids.length === 0) && attempts < maxAttempts);\n\n // expect(bidsResponse?.bids).toBeDefined();\n // expect(Array.isArray(bidsResponse?.bids)).toBe(true);\n\n if (bidsResponse?.bids?.length >= 2) {\n console.log(`Found ${bidsResponse!.bids!.length} bids for the deployment`);\n } else if (bidsResponse!.bids!.length === 1) {\n console.log(`Found only 1 bid, proceeding with single bid test`);\n } else {\n throw new Error(`No bids found after ${maxAttempts} attempts. Check deployment resources and pricing.`);\n }\n\n // expect(bidsResponse!.bids!.length).toBeGreaterThan(0);\n\n bidsResponse?.bids?.forEach((bidResponse, index) => {\n const bid = bidResponse.bid;\n console.log(` Bid ${index + 1}: Provider ${bid?.id?.provider}, Price: ${bid?.price?.amount}${bid?.price?.denom}`);\n });\n\n console.log(\"Step 4: Selecting the first bid...\");\n const firstBid = bidsResponse!.bids![0]!.bid!;\n // expect(firstBid).toBeDefined();\n // expect(firstBid.id).toBeDefined();\n\n console.log(`Selected bid from provider: ${firstBid.id!.provider}`);\n\n console.log(\"Step 5: Creating lease from selected bid...\");\n const leaseMessage: MsgCreateLease = {\n bidId: {\n owner: firstBid.id!.owner,\n dseq: firstBid.id!.dseq,\n gseq: firstBid.id!.gseq,\n oseq: firstBid.id!.oseq,\n provider: firstBid.id!.provider,\n bseq: firstBid.id!.bseq,\n },\n };\n\n const leaseResult = await sdk.akash.market.v1beta5.createLease(leaseMessage, {\n memo: \"Test lease creation from bid - Akash Chain SDK\",\n });\n\n console.log(\"Step 6: Verifying lease creation...\");\n // expect(leaseResult).toBeDefined();\n console.log(\"Lease created successfully!\");\n\n const leaseQuery = await sdk.akash.market.v1beta5.getLeases({\n filters: {\n owner: deploymentId.owner,\n dseq: deploymentId.dseq,\n gseq: 1,\n oseq: 1,\n provider: firstBid.id!.provider,\n state: \"\",\n bseq: 0,\n },\n });\n\n // expect(leaseQuery?.leases).toBeDefined();\n // expect(Array.isArray(leaseQuery?.leases)).toBe(true);\n // expect(leaseQuery!.leases!.length).toBeGreaterThan(0);\n\n const createdLease = leaseQuery!.leases![0]!.lease!;\n // expect(createdLease.id?.owner).toBe(deploymentId.owner);\n // expect(createdLease.id?.dseq.toString()).toBe(deploymentId.dseq.toString());\n // expect(createdLease.id?.provider).toBe(firstBid.id!.provider);\n\n console.log(\"Lease verification completed successfully!\");\n console.log(`Lease ID: ${createdLease.id?.owner}/${createdLease.id?.dseq}/${createdLease.id?.gseq}/${createdLease.id?.oseq}/${createdLease.id?.provider}`);\n console.log(`Lease State: ${createdLease.state}`);\n console.log(`Lease Price: ${createdLease.price?.amount}${createdLease.price?.denom}`);\n\n // const deposit: Deposit = {\n // amount: {\n // denom: \"uakt\", // micro\n // amount: \"5000000\",\n // },\n // sources: [Source.balance],\n // };\n\n // const deployment = await sdk.akash.deployment.v1beta4.getDeployment({\n // id: deploymentId,\n // });\n\n // const accountDepositMsg: MsgAccountDeposit = {\n // signer: account.address,\n // id: deployment.escrowAccount!.id,\n // deposit: deposit,\n // };\n\n // await sdk.akash.escrow.v1.accountDeposit(\n // accountDepositMsg,\n // );\n // console.log(`\u2705 Account deposit added successfully:`, {\n // deployment: deploymentId.dseq.toString(),\n // amount: `${deposit.amount!.amount}${deposit.amount!.denom}`,\n // });\n\n // const wallet = await DirectSecp256k1HdWallet.fromMnemonic(mnemonic, { prefix: \"akash\" });\n\n // // const signer = await createSignArbitraryAkashWallet(wallet);\n // // const tokenManager = new JwtTokenManager(signer);\n\n // // const token = await tokenManager.generateToken({\n // // iss: accounts[0].address,\n // // exp: Math.floor(Date.now() / 1000) + 3600,\n // // iat: Math.floor(Date.now() / 1000),\n // // version: \"v1\",\n // // leases: { access: \"full\" },\n // // });\n\n // // const accounts = await wallet.getAccounts();\n // // console.log(accounts[0].address);\n\n // // const msg = {\n // // \"typeUrl\": \"/akash.cert.v1beta3.MsgCreateCertificate\",\n // // \"value\": \"Cixha2FzaDFxaDBmMGg3amxxNHg1Z3B4Z2hyeHZwczVsMDl5N3V1dmN1bWN5ZBL2BC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQ0KTUlJQm16Q0NBVUdnQXdJQkFnSUhCalI0WFhFSjZEQUtCZ2dxaGtqT1BRUURBakEzTVRVd013WURWUVFEREN4aA0KYTJGemFERnhhREJtTUdnM2FteHhOSGcxWjNCNFoyaHllSFp3Y3pWc01EbDVOM1YxZG1OMWJXTjVaREFlRncweQ0KTlRBMU1EWXhOREl6TkRoYUZ3MHlOakExTURZeE5ESXpORGhhTURjeE5UQXpCZ05WQkFNTUxHRnJZWE5vTVhGbw0KTUdZd2FEZHFiSEUwZURWbmNIaG5hSEo0ZG5Cek5Xd3dPWGszZFhWMlkzVnRZM2xrTUZrd0V3WUhLb1pJemowQw0KQVFZSUtvWkl6ajBEQVFjRFFnQUVRR0hJcXlHWlF3emhKSUlwUlhjbWdXckVkWHlXSTB5dzBJeVY0QUdGZ2QxMQ0KNG92VXljRFUyNC9GaG1tWFZtcG5WWEhjVDFUaXFITUJHYmVscmViZE42TTRNRFl3RGdZRFZSMFBBUUgvQkFRRA0KQWdRd01CTUdBMVVkSlFRTU1Bb0dDQ3NHQVFVRkJ3TUNNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdDZ1lJS29aSQ0KemowRUF3SURTQUF3UlFJZ0pxV0ZJYzkzWTJHNDJST1d3dGFBWU1ueEtnTE5ZL21IK2tmZ1pSKzljVVFDSVFDdw0KbllSbkZMaXl2WHduUHQrTGZOV2tvNEZBRnFtY1hEelRvRnJ3VUtZMHBnPT0NCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0NChq8AS0tLS0tQkVHSU4gRUMgUFVCTElDIEtFWS0tLS0tDQpNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVRR0hJcXlHWlF3emhKSUlwUlhjbWdXckVkWHlXDQpJMHl3MEl5VjRBR0ZnZDExNG92VXljRFUyNC9GaG1tWFZtcG5WWEhjVDFUaXFITUJHYmVscmViZE53PT0NCi0tLS0tRU5EIEVDIFBVQkxJQyBLRVktLS0tLQ0K\"\n // // }\n // // ;\n // // console.log(Buffer.from(msg.value, 'base64'))\n\n // const sdk = createChainNodeSDK({\n // query: {\n // baseUrl: \"http://rpc.dev.akash.pub:30090\",\n // },\n // });\n\n // // const sdk2 = createChainNodeSDK({\n // // query: {\n // // baseUrl: \"http://rpc.dev.akash.pub:30090\",\n // // },\n // // tx: {\n // // baseUrl: \"http://rpc.dev.akash.pub:31317\",\n // // signer: wallet,\n // // },\n // // });\n\n // const res = await sdk.akash.deployment.v1beta4.getDeployments({\n // pagination: {\n // limit: 1,\n // },\n // });\n\n // // const accounts = await wallet.getAccounts();\n // // const cert = await certificateManager.generatePEM(accounts[0].address);\n // // const res2 = await sdk.akash.cert.v1.createCertificate({\n // // owner: accounts[0].address,\n // // cert: Buffer.from(cert.cert, 'utf-8'),\n // // pubkey: Buffer.from(cert.publicKey, 'utf-8'),\n // // })\n\n // console.dir(res, { depth: null });\n}\n\nmain();\n\n// import { createProviderSDK } from \"@akashnetwork/chain-sdk/provider\";\n\n// const sdk = createProviderSDK({\n// baseUrl: \"https://provider.provider-02.sandbox-01.aksh.pw:8444\",\n// });\n\n// const res = await sdk.akash.provider.v1.getStatus()\n\n// console.log(res);\n\n// async function addAccountDeposit(\n// deploymentId: DeploymentID,\n// amount: string,\n// denom: string = 'uakt'\n// ) {\n// console.log(\n// `\uD83D\uDCB0 Adding account deposit to deployment ${deploymentId.dseq}...`\n// );\n\n// // // Get the escrow account for the deployment\n// // const deployment = await this.getDeploymentStatus(deploymentId);\n// // if (!deployment.escrowAccount) {\n// // throw new Error(\n// // `No escrow account found for deployment ${deploymentId.dseq}`\n// // );\n// // }\n\n// return result;\n// } catch (error) {\n// console.error(`\u274C Failed to add account deposit:`, error);\n// throw error;\n// }\n// }\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA,2BAAwC;AACxC,kBAAiB;AACjB,sBAAmC;AAGnC,4BAAqC;AAIrC,mBAAwC;
|
|
4
|
+
"sourcesContent": ["import { DirectSecp256k1HdWallet } from \"@cosmjs/proto-signing\";\nimport Long from \"long\";\nimport { setTimeout as wait } from \"timers/promises\";\n\nimport type { Deposit, MsgAccountDeposit } from \"./generated/protos/index.akash.v1.ts\";\nimport { DeploymentID, Source } from \"./generated/protos/index.akash.v1.ts\";\nimport type { MsgCreateDeployment } from \"./generated/protos/index.akash.v1beta4.ts\";\nimport { GroupSpec } from \"./generated/protos/index.akash.v1beta4.ts\";\nimport type { MsgCreateLease } from \"./generated/protos/index.akash.v1beta5.ts\";\nimport { createChainNodeSDK, SDL } from \"./index.ts\";\nimport { createChainNodeWebSDK } from \"./index.web.ts\";\n\nasync function main() {\n let mnemonic = process.env.MNEMONIC || \"motion isolate mother convince snack twenty tumble boost elbow bundle modify balcony\";\n mnemonic = \"vacuum wait copper guilt bind return indoor convince effort leader solid tape salon swim better step gossip because satoshi fresh use jungle diagram grape\";\n mnemonic = \"vacuum wait copper guilt bind return indoor convince effort leader solid tape salon swim better step gossip because satoshi fresh use jungle diagram grape\";\n\n const testMnemonic = mnemonic;\n\n const wallet = await DirectSecp256k1HdWallet.fromMnemonic(testMnemonic, { prefix: \"akash\" });\n const [account] = await wallet.getAccounts();\n\n console.log(`Test Account Address: ${account.address}`);\n\n const QUERY_RPC_URL = process.env.QUERY_RPC_URL || \"http://grpc.sandbox-2.aksh.pw:9090\";\n const TX_RPC_URL = process.env.TX_RPC_URL || \"https://rpc.sandbox-2.aksh.pw:443\";\n\n const sdk = createChainNodeSDK({\n query: { baseUrl: QUERY_RPC_URL },\n tx: { baseUrl: TX_RPC_URL, signer: wallet },\n });\n\n // const deployments = await sdk.akash.deployment.v1beta4.getDeployments({\n // filters: {\n // owner: account.address,\n // state: \"active\",\n // },\n // pagination: {\n // limit: 100,\n // },\n // });\n // const balance = await sdk.cosmos.bank.v1beta1.getBalance({\n // address: account.address,\n // denom: \"uakt\",\n // })\n // console.log(`Balance: ${balance.balance?.amount}${balance.balance?.denom}`);\n\n // console.log(`Found ${deployments.deployments.length} deployments`);\n // for (const deployment of deployments.deployments) {\n // await sdk.akash.deployment.v1beta4.closeDeployment({\n // id: deployment.deployment!.id,\n // });\n // }\n\n // return;\n\n console.log(\"Step 1: Creating deployment...\");\n const sdl = SDL.fromString(`\n# Welcome to the Akash Network! \uD83D\uDE80\u2601\n# This file is called a Stack Definition Laguage (SDL)\n# SDL is a human friendly data standard for declaring deployment attributes.\n# The SDL file is a \"form\" to request resources from the Network.\n# SDL is compatible with the YAML standard and similar to Docker Compose files.\n\n---\n# Indicates version of Akash configuration file. Currently only \"2.0\" is accepted.\nversion: \"2.0\"\n\n# The top-level services entry contains a map of workloads to be ran on the Akash deployment. Each key is a service name; values are a map containing the following keys:\n# https://akash.network/docs/getting-started/stack-definition-language/#services\nservices:\n # The name of the service \"web\"\n web:\n # The docker container image with version. You must specify a version, the \"latest\" tag doesn't work.\n image: baktun/hello-akash-world:1.0.0\n # You can map ports here https://akash.network/docs/getting-started/stack-definition-language/#servicesexpose\n expose:\n - port: 3000\n as: 80\n to:\n - global: true\n\n# The profiles section contains named compute and placement profiles to be used in the deployment.\n# https://akash.network/docs/getting-started/stack-definition-language/#profiles\nprofiles:\n # profiles.compute is map of named compute profiles. Each profile specifies compute resources to be leased for each service instance uses uses the profile.\n # https://akash.network/docs/getting-started/stack-definition-language/#profilescompute\n compute:\n # The name of the service\n web:\n resources:\n cpu:\n units: 0.5\n memory:\n size: 512Mi\n storage:\n size: 512Mi\n\n# profiles.placement is map of named datacenter profiles. Each profile specifies required datacenter attributes and pricing configuration for each compute profile that will be used within the datacenter. It also specifies optional list of signatures of which tenants expects audit of datacenter attributes.\n# https://akash.network/docs/getting-started/stack-definition-language/#profilesplacement\n placement:\n dcloud:\n pricing:\n # The name of the service\n web:\n denom: uakt\n amount: 10000\n\n# The deployment section defines how to deploy the services. It is a mapping of service name to deployment configuration.\n# https://akash.network/docs/getting-started/stack-definition-language/#deployment\ndeployment:\n # The name of the service\n web:\n dcloud:\n profile: web\n count: 1\n `, \"beta3\");\n\n const deploymentMessage: MsgCreateDeployment = {\n id: {\n owner: account.address,\n dseq: Long.fromNumber(Date.now()), // Use timestamp for uniqueness\n },\n groups: sdl.groups(),\n hash: await sdl.manifestVersion(),\n deposit: {\n amount: {\n denom: \"uakt\",\n amount: \"500000\",\n },\n sources: [Source.balance],\n },\n };\n\n // for (let i = 0; i < 1; i++) {\n // deploymentMessage.id!.dseq = deploymentMessage.id!.dseq!.add(Long.fromNumber(1));\n const deploymentResult = await sdk.akash.deployment.v1beta4.createDeployment(deploymentMessage, {\n memo: \"Test deployment for lease creation - Akash Chain SDK\",\n });\n // console.log(`created ${i}/10 deployment`);\n // }\n\n console.log(\"Deployment created successfully!\");\n\n // return;\n const deploymentId = {\n owner: account.address,\n dseq: deploymentMessage.id!.dseq,\n };\n\n console.log(\"Step 2: Waiting for providers to create bids...\");\n console.log(`Deployment ID: ${deploymentId.owner}/${deploymentId.dseq}`);\n let bidsResponse;\n let attempts = 0;\n const maxAttempts = 18;\n\n do {\n await wait(10000);\n attempts++;\n\n console.log(`Checking for bids (attempt ${attempts}/${maxAttempts})...`);\n console.log(\"Make sure your address is whitelisted on this network.\");\n\n bidsResponse = await sdk.akash.market.v1beta5.getBids({\n filters: {\n owner: deploymentId.owner,\n dseq: deploymentId.dseq,\n gseq: 1,\n oseq: 1,\n },\n });\n\n console.log(`Found ${bidsResponse?.bids?.length || 0} bids`);\n } while ((!bidsResponse?.bids || bidsResponse.bids.length === 0) && attempts < maxAttempts);\n\n // expect(bidsResponse?.bids).toBeDefined();\n // expect(Array.isArray(bidsResponse?.bids)).toBe(true);\n\n if (bidsResponse?.bids?.length >= 2) {\n console.log(`Found ${bidsResponse!.bids!.length} bids for the deployment`);\n } else if (bidsResponse!.bids!.length === 1) {\n console.log(`Found only 1 bid, proceeding with single bid test`);\n } else {\n throw new Error(`No bids found after ${maxAttempts} attempts. Check deployment resources and pricing.`);\n }\n\n // expect(bidsResponse!.bids!.length).toBeGreaterThan(0);\n\n bidsResponse?.bids?.forEach((bidResponse, index) => {\n const bid = bidResponse.bid;\n console.log(` Bid ${index + 1}: Provider ${bid?.id?.provider}, Price: ${bid?.price?.amount}${bid?.price?.denom}`);\n });\n\n console.log(\"Step 4: Selecting the first bid...\");\n const firstBid = bidsResponse!.bids![0]!.bid!;\n // expect(firstBid).toBeDefined();\n // expect(firstBid.id).toBeDefined();\n\n console.log(`Selected bid from provider: ${firstBid.id!.provider}`);\n\n console.log(\"Step 5: Creating lease from selected bid...\");\n const leaseMessage: MsgCreateLease = {\n bidId: {\n owner: firstBid.id!.owner,\n dseq: firstBid.id!.dseq,\n gseq: firstBid.id!.gseq,\n oseq: firstBid.id!.oseq,\n provider: firstBid.id!.provider,\n bseq: firstBid.id!.bseq,\n },\n };\n\n const leaseResult = await sdk.akash.market.v1beta5.createLease(leaseMessage, {\n memo: \"Test lease creation from bid - Akash Chain SDK\",\n });\n\n console.log(\"Step 6: Verifying lease creation...\");\n // expect(leaseResult).toBeDefined();\n console.log(\"Lease created successfully!\");\n\n const leaseQuery = await sdk.akash.market.v1beta5.getLeases({\n filters: {\n owner: deploymentId.owner,\n dseq: deploymentId.dseq,\n gseq: 1,\n oseq: 1,\n provider: firstBid.id!.provider,\n state: \"\",\n bseq: 0,\n },\n });\n\n // expect(leaseQuery?.leases).toBeDefined();\n // expect(Array.isArray(leaseQuery?.leases)).toBe(true);\n // expect(leaseQuery!.leases!.length).toBeGreaterThan(0);\n\n const createdLease = leaseQuery!.leases![0]!.lease!;\n // expect(createdLease.id?.owner).toBe(deploymentId.owner);\n // expect(createdLease.id?.dseq.toString()).toBe(deploymentId.dseq.toString());\n // expect(createdLease.id?.provider).toBe(firstBid.id!.provider);\n\n console.log(\"Lease verification completed successfully!\");\n console.log(`Lease ID: ${createdLease.id?.owner}/${createdLease.id?.dseq}/${createdLease.id?.gseq}/${createdLease.id?.oseq}/${createdLease.id?.provider}`);\n console.log(`Lease State: ${createdLease.state}`);\n console.log(`Lease Price: ${createdLease.price?.amount}${createdLease.price?.denom}`);\n\n // const deposit: Deposit = {\n // amount: {\n // denom: \"uakt\", // micro\n // amount: \"5000000\",\n // },\n // sources: [Source.balance],\n // };\n\n // const deployment = await sdk.akash.deployment.v1beta4.getDeployment({\n // id: deploymentId,\n // });\n\n // const accountDepositMsg: MsgAccountDeposit = {\n // signer: account.address,\n // id: deployment.escrowAccount!.id,\n // deposit: deposit,\n // };\n\n // await sdk.akash.escrow.v1.accountDeposit(\n // accountDepositMsg,\n // );\n // console.log(`\u2705 Account deposit added successfully:`, {\n // deployment: deploymentId.dseq.toString(),\n // amount: `${deposit.amount!.amount}${deposit.amount!.denom}`,\n // });\n\n // const wallet = await DirectSecp256k1HdWallet.fromMnemonic(mnemonic, { prefix: \"akash\" });\n\n // // const signer = await createSignArbitraryAkashWallet(wallet);\n // // const tokenManager = new JwtTokenManager(signer);\n\n // // const token = await tokenManager.generateToken({\n // // iss: accounts[0].address,\n // // exp: Math.floor(Date.now() / 1000) + 3600,\n // // iat: Math.floor(Date.now() / 1000),\n // // version: \"v1\",\n // // leases: { access: \"full\" },\n // // });\n\n // // const accounts = await wallet.getAccounts();\n // // console.log(accounts[0].address);\n\n // // const msg = {\n // // \"typeUrl\": \"/akash.cert.v1beta3.MsgCreateCertificate\",\n // // \"value\": \"Cixha2FzaDFxaDBmMGg3amxxNHg1Z3B4Z2hyeHZwczVsMDl5N3V1dmN1bWN5ZBL2BC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQ0KTUlJQm16Q0NBVUdnQXdJQkFnSUhCalI0WFhFSjZEQUtCZ2dxaGtqT1BRUURBakEzTVRVd013WURWUVFEREN4aA0KYTJGemFERnhhREJtTUdnM2FteHhOSGcxWjNCNFoyaHllSFp3Y3pWc01EbDVOM1YxZG1OMWJXTjVaREFlRncweQ0KTlRBMU1EWXhOREl6TkRoYUZ3MHlOakExTURZeE5ESXpORGhhTURjeE5UQXpCZ05WQkFNTUxHRnJZWE5vTVhGbw0KTUdZd2FEZHFiSEUwZURWbmNIaG5hSEo0ZG5Cek5Xd3dPWGszZFhWMlkzVnRZM2xrTUZrd0V3WUhLb1pJemowQw0KQVFZSUtvWkl6ajBEQVFjRFFnQUVRR0hJcXlHWlF3emhKSUlwUlhjbWdXckVkWHlXSTB5dzBJeVY0QUdGZ2QxMQ0KNG92VXljRFUyNC9GaG1tWFZtcG5WWEhjVDFUaXFITUJHYmVscmViZE42TTRNRFl3RGdZRFZSMFBBUUgvQkFRRA0KQWdRd01CTUdBMVVkSlFRTU1Bb0dDQ3NHQVFVRkJ3TUNNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdDZ1lJS29aSQ0KemowRUF3SURTQUF3UlFJZ0pxV0ZJYzkzWTJHNDJST1d3dGFBWU1ueEtnTE5ZL21IK2tmZ1pSKzljVVFDSVFDdw0KbllSbkZMaXl2WHduUHQrTGZOV2tvNEZBRnFtY1hEelRvRnJ3VUtZMHBnPT0NCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0NChq8AS0tLS0tQkVHSU4gRUMgUFVCTElDIEtFWS0tLS0tDQpNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVRR0hJcXlHWlF3emhKSUlwUlhjbWdXckVkWHlXDQpJMHl3MEl5VjRBR0ZnZDExNG92VXljRFUyNC9GaG1tWFZtcG5WWEhjVDFUaXFITUJHYmVscmViZE53PT0NCi0tLS0tRU5EIEVDIFBVQkxJQyBLRVktLS0tLQ0K\"\n // // }\n // // ;\n // // console.log(Buffer.from(msg.value, 'base64'))\n\n // const sdk = createChainNodeSDK({\n // query: {\n // baseUrl: \"http://rpc.dev.akash.pub:30090\",\n // },\n // });\n\n // // const sdk2 = createChainNodeSDK({\n // // query: {\n // // baseUrl: \"http://rpc.dev.akash.pub:30090\",\n // // },\n // // tx: {\n // // baseUrl: \"http://rpc.dev.akash.pub:31317\",\n // // signer: wallet,\n // // },\n // // });\n\n // const res = await sdk.akash.deployment.v1beta4.getDeployments({\n // pagination: {\n // limit: 1,\n // },\n // });\n\n // // const accounts = await wallet.getAccounts();\n // // const cert = await certificateManager.generatePEM(accounts[0].address);\n // // const res2 = await sdk.akash.cert.v1.createCertificate({\n // // owner: accounts[0].address,\n // // cert: Buffer.from(cert.cert, 'utf-8'),\n // // pubkey: Buffer.from(cert.publicKey, 'utf-8'),\n // // })\n\n // console.dir(res, { depth: null });\n}\n\nmain();\n\n// import { createProviderSDK } from \"@akashnetwork/chain-sdk/provider\";\n\n// const sdk = createProviderSDK({\n// baseUrl: \"https://provider.provider-02.sandbox-01.aksh.pw:8444\",\n// });\n\n// const res = await sdk.akash.provider.v1.getStatus()\n\n// console.log(res);\n\n// async function addAccountDeposit(\n// deploymentId: DeploymentID,\n// amount: string,\n// denom: string = 'uakt'\n// ) {\n// console.log(\n// `\uD83D\uDCB0 Adding account deposit to deployment ${deploymentId.dseq}...`\n// );\n\n// // // Get the escrow account for the deployment\n// // const deployment = await this.getDeploymentStatus(deploymentId);\n// // if (!deployment.escrowAccount) {\n// // throw new Error(\n// // `No escrow account found for deployment ${deploymentId.dseq}`\n// // );\n// // }\n\n// return result;\n// } catch (error) {\n// console.error(`\u274C Failed to add account deposit:`, error);\n// throw error;\n// }\n// }\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["Long", "wait"]
|
|
7
7
|
}
|
|
@@ -13,6 +13,30 @@ var USDC_IBC_DENOMS = {
|
|
|
13
13
|
};
|
|
14
14
|
var AKT_DENOM = "uakt";
|
|
15
15
|
|
|
16
|
+
// src/sdl/SDL/SdlValidationError.ts
|
|
17
|
+
var SdlValidationError = class _SdlValidationError extends Error {
|
|
18
|
+
/**
|
|
19
|
+
* Asserts a condition and throws an `SdlValidationError` if the condition is false.
|
|
20
|
+
* @param condition - The condition to assert.
|
|
21
|
+
* @param message - The error message to throw if the assertion fails.
|
|
22
|
+
* @example
|
|
23
|
+
* SdlValidationError.assert(someCondition, "Condition failed");
|
|
24
|
+
*/
|
|
25
|
+
static assert(condition, message) {
|
|
26
|
+
if (!condition) {
|
|
27
|
+
throw new _SdlValidationError(message);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Creates an instance of `SdlValidationError`.
|
|
32
|
+
* @param message - The error message.
|
|
33
|
+
*/
|
|
34
|
+
constructor(message) {
|
|
35
|
+
super(message);
|
|
36
|
+
this.name = "SdlValidationError";
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
16
40
|
// src/sdl/SDL/SDL.ts
|
|
17
41
|
import YAML from "js-yaml";
|
|
18
42
|
import { default as stableStringify } from "json-stable-stringify";
|
|
@@ -51,30 +75,6 @@ function parseCpuResourceString(size) {
|
|
|
51
75
|
throw new Error(`Invalid size string: ${size}`);
|
|
52
76
|
}
|
|
53
77
|
|
|
54
|
-
// src/sdl/SDL/SdlValidationError.ts
|
|
55
|
-
var SdlValidationError = class _SdlValidationError extends Error {
|
|
56
|
-
/**
|
|
57
|
-
* Asserts a condition and throws an `SdlValidationError` if the condition is false.
|
|
58
|
-
* @param condition - The condition to assert.
|
|
59
|
-
* @param message - The error message to throw if the assertion fails.
|
|
60
|
-
* @example
|
|
61
|
-
* SdlValidationError.assert(someCondition, "Condition failed");
|
|
62
|
-
*/
|
|
63
|
-
static assert(condition, message) {
|
|
64
|
-
if (!condition) {
|
|
65
|
-
throw new _SdlValidationError(message);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Creates an instance of `SdlValidationError`.
|
|
70
|
-
* @param message - The error message.
|
|
71
|
-
*/
|
|
72
|
-
constructor(message) {
|
|
73
|
-
super(message);
|
|
74
|
-
this.name = "SdlValidationError";
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
|
|
78
78
|
// src/sdl/SDL/utils.ts
|
|
79
79
|
function castArray(value) {
|
|
80
80
|
return Array.isArray(value) ? value : [value];
|
|
@@ -5311,6 +5311,7 @@ export {
|
|
|
5311
5311
|
TESTNET_ID,
|
|
5312
5312
|
USDC_IBC_DENOMS,
|
|
5313
5313
|
AKT_DENOM,
|
|
5314
|
+
SdlValidationError,
|
|
5314
5315
|
SDL,
|
|
5315
5316
|
TransportErrorCode,
|
|
5316
5317
|
TransportError,
|
|
@@ -5335,4 +5336,4 @@ export {
|
|
|
5335
5336
|
JwtValidator,
|
|
5336
5337
|
JwtTokenManager
|
|
5337
5338
|
};
|
|
5338
|
-
//# sourceMappingURL=chunk-
|
|
5339
|
+
//# sourceMappingURL=chunk-LSLZAKUA.js.map
|