{"version":3,"file":"globalAccount.mjs","sources":["../../../src/globalAccount.ts"],"sourcesContent":["import { PublicKey } from \"@solana/web3.js\";\nimport { struct, bool, u64, publicKey, Layout } from \"@coral-xyz/borsh\";\n\nexport class GlobalAccount {\n  public discriminator: bigint;\n  public initialized: boolean = false;\n  public authority: PublicKey;\n  public feeRecipient: PublicKey;\n  public initialVirtualTokenReserves: bigint;\n  public initialVirtualSolReserves: bigint;\n  public initialRealTokenReserves: bigint;\n  public tokenTotalSupply: bigint;\n  public feeBasisPoints: bigint;\n\n  constructor(\n    discriminator: bigint,\n    initialized: boolean,\n    authority: PublicKey,\n    feeRecipient: PublicKey,\n    initialVirtualTokenReserves: bigint,\n    initialVirtualSolReserves: bigint,\n    initialRealTokenReserves: bigint,\n    tokenTotalSupply: bigint,\n    feeBasisPoints: bigint\n  ) {\n    this.discriminator = discriminator;\n    this.initialized = initialized;\n    this.authority = authority;\n    this.feeRecipient = feeRecipient;\n    this.initialVirtualTokenReserves = initialVirtualTokenReserves;\n    this.initialVirtualSolReserves = initialVirtualSolReserves;\n    this.initialRealTokenReserves = initialRealTokenReserves;\n    this.tokenTotalSupply = tokenTotalSupply;\n    this.feeBasisPoints = feeBasisPoints;\n  }\n\n  getInitialBuyPrice(amount: bigint): bigint {\n    if (amount <= 0n) {\n      return 0n;\n    }\n\n    let n = this.initialVirtualSolReserves * this.initialVirtualTokenReserves;\n    let i = this.initialVirtualSolReserves + amount;\n    let r = n / i + 1n;\n    let s = this.initialVirtualTokenReserves - r;\n    return s < this.initialRealTokenReserves\n      ? s\n      : this.initialRealTokenReserves;\n  }\n\n  public static fromBuffer(buffer: Buffer): GlobalAccount {\n    const structure: Layout<GlobalAccount> = struct([\n      u64(\"discriminator\"),\n      bool(\"initialized\"),\n      publicKey(\"authority\"),\n      publicKey(\"feeRecipient\"),\n      u64(\"initialVirtualTokenReserves\"),\n      u64(\"initialVirtualSolReserves\"),\n      u64(\"initialRealTokenReserves\"),\n      u64(\"tokenTotalSupply\"),\n      u64(\"feeBasisPoints\"),\n    ]);\n\n    let value = structure.decode(buffer);\n    return new GlobalAccount(\n      BigInt(value.discriminator),\n      value.initialized,\n      value.authority,\n      value.feeRecipient,\n      BigInt(value.initialVirtualTokenReserves),\n      BigInt(value.initialVirtualSolReserves),\n      BigInt(value.initialRealTokenReserves),\n      BigInt(value.tokenTotalSupply),\n      BigInt(value.feeBasisPoints)\n    );\n  }\n}\n"],"names":[],"mappings":";;MAGa,aAAa,CAAA;AACjB,IAAA,aAAa;IACb,WAAW,GAAY,KAAK;AAC5B,IAAA,SAAS;AACT,IAAA,YAAY;AACZ,IAAA,2BAA2B;AAC3B,IAAA,yBAAyB;AACzB,IAAA,wBAAwB;AACxB,IAAA,gBAAgB;AAChB,IAAA,cAAc;AAErB,IAAA,WAAA,CACE,aAAqB,EACrB,WAAoB,EACpB,SAAoB,EACpB,YAAuB,EACvB,2BAAmC,EACnC,yBAAiC,EACjC,wBAAgC,EAChC,gBAAwB,EACxB,cAAsB,EAAA;AAEtB,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAChC,QAAA,IAAI,CAAC,2BAA2B,GAAG,2BAA2B;AAC9D,QAAA,IAAI,CAAC,yBAAyB,GAAG,yBAAyB;AAC1D,QAAA,IAAI,CAAC,wBAAwB,GAAG,wBAAwB;AACxD,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AACxC,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;;AAGtC,IAAA,kBAAkB,CAAC,MAAc,EAAA;AAC/B,QAAA,IAAI,MAAM,IAAI,EAAE,EAAE;AAChB,YAAA,OAAO,EAAE;;QAGX,IAAI,CAAC,GAAG,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,2BAA2B;AACzE,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,yBAAyB,GAAG,MAAM;AAC/C,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;AAClB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,2BAA2B,GAAG,CAAC;AAC5C,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC;AACd,cAAE;AACF,cAAE,IAAI,CAAC,wBAAwB;;IAG5B,OAAO,UAAU,CAAC,MAAc,EAAA;QACrC,MAAM,SAAS,GAA0B,MAAM,CAAC;YAC9C,GAAG,CAAC,eAAe,CAAC;YACpB,IAAI,CAAC,aAAa,CAAC;YACnB,SAAS,CAAC,WAAW,CAAC;YACtB,SAAS,CAAC,cAAc,CAAC;YACzB,GAAG,CAAC,6BAA6B,CAAC;YAClC,GAAG,CAAC,2BAA2B,CAAC;YAChC,GAAG,CAAC,0BAA0B,CAAC;YAC/B,GAAG,CAAC,kBAAkB,CAAC;YACvB,GAAG,CAAC,gBAAgB,CAAC;AACtB,SAAA,CAAC;QAEF,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;QACpC,OAAO,IAAI,aAAa,CACtB,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAC3B,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,YAAY,EAClB,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,EACzC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,EACvC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,EACtC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAC9B,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAC7B;;AAEJ;;;;"}